0 CpxTRS
↳1 NestedDefinedSymbolProof (BOTH BOUNDS(ID, ID), 0 ms)
↳2 CpxTRS
↳3 TrsToWeightedTrsProof (BOTH BOUNDS(ID, ID), 0 ms)
↳4 CpxWeightedTrs
↳5 TypeInferenceProof (BOTH BOUNDS(ID, ID), 0 ms)
↳6 CpxTypedWeightedTrs
↳7 CompletionProof (UPPER BOUND(ID), 0 ms)
↳8 CpxTypedWeightedCompleteTrs
↳9 NarrowingProof (BOTH BOUNDS(ID, ID), 0 ms)
↳10 CpxTypedWeightedCompleteTrs
↳11 CpxTypedWeightedTrsToRntsProof (UPPER BOUND(ID), 2 ms)
↳12 CpxRNTS
↳13 InliningProof (UPPER BOUND(ID), 31 ms)
↳14 CpxRNTS
↳15 SimplificationProof (BOTH BOUNDS(ID, ID), 0 ms)
↳16 CpxRNTS
↳17 CpxRntsAnalysisOrderProof (BOTH BOUNDS(ID, ID), 0 ms)
↳18 CpxRNTS
↳19 IntTrsBoundProof (UPPER BOUND(ID), 138 ms)
↳20 CpxRNTS
↳21 IntTrsBoundProof (UPPER BOUND(ID), 67 ms)
↳22 CpxRNTS
↳23 ResultPropagationProof (UPPER BOUND(ID), 0 ms)
↳24 CpxRNTS
↳25 IntTrsBoundProof (UPPER BOUND(ID), 168 ms)
↳26 CpxRNTS
↳27 IntTrsBoundProof (UPPER BOUND(ID), 67 ms)
↳28 CpxRNTS
↳29 ResultPropagationProof (UPPER BOUND(ID), 0 ms)
↳30 CpxRNTS
↳31 IntTrsBoundProof (UPPER BOUND(ID), 1371 ms)
↳32 CpxRNTS
↳33 IntTrsBoundProof (UPPER BOUND(ID), 433 ms)
↳34 CpxRNTS
↳35 FinalProof (⇔, 0 ms)
↳36 BOUNDS(1, n^1)
circ(cons(a, s), t) → cons(msubst(a, t), circ(s, t))
circ(cons(lift, s), cons(a, t)) → cons(a, circ(s, t))
circ(cons(lift, s), cons(lift, t)) → cons(lift, circ(s, t))
circ(circ(s, t), u) → circ(s, circ(t, u))
circ(s, id) → s
circ(id, s) → s
circ(cons(lift, s), circ(cons(lift, t), u)) → circ(cons(lift, circ(s, t)), u)
subst(a, id) → a
msubst(a, id) → a
msubst(msubst(a, s), t) → msubst(a, circ(s, t))
circ(s, id) → s
circ(id, s) → s
circ(cons(a, s), t) → cons(msubst(a, t), circ(s, t))
circ(cons(lift, s), cons(lift, t)) → cons(lift, circ(s, t))
subst(a, id) → a
msubst(a, id) → a
circ(cons(lift, s), cons(a, t)) → cons(a, circ(s, t))
circ(s, id) → s [1]
circ(id, s) → s [1]
circ(cons(a, s), t) → cons(msubst(a, t), circ(s, t)) [1]
circ(cons(lift, s), cons(lift, t)) → cons(lift, circ(s, t)) [1]
subst(a, id) → a [1]
msubst(a, id) → a [1]
circ(cons(lift, s), cons(a, t)) → cons(a, circ(s, t)) [1]
circ(s, id) → s [1]
circ(id, s) → s [1]
circ(cons(a, s), t) → cons(msubst(a, t), circ(s, t)) [1]
circ(cons(lift, s), cons(lift, t)) → cons(lift, circ(s, t)) [1]
subst(a, id) → a [1]
msubst(a, id) → a [1]
circ(cons(lift, s), cons(a, t)) → cons(a, circ(s, t)) [1]
circ :: id:cons → id:cons → id:cons id :: id:cons cons :: lift → id:cons → id:cons msubst :: lift → id:cons → lift lift :: lift subst :: subst → id:cons → subst |
(a) The obligation is a constructor system where every type has a constant constructor,
(b) The following defined symbols do not have to be completely defined, as they can never occur inside other defined symbols:
circ
subst
msubst
const
Runtime Complexity Weighted TRS with Types. The TRS R consists of the following rules:
The TRS has the following type information:
Rewrite Strategy: INNERMOST |
Runtime Complexity Weighted TRS with Types. The TRS R consists of the following rules:
The TRS has the following type information:
Rewrite Strategy: INNERMOST |
id => 0
lift => 0
const => 0
circ(z, z') -{ 1 }→ s :|: z = s, s >= 0, z' = 0
circ(z, z') -{ 1 }→ s :|: s >= 0, z = 0, z' = s
circ(z, z') -{ 1 }→ 1 + a + circ(s, t) :|: z = 1 + 0 + s, a >= 0, z' = 1 + a + t, t >= 0, s >= 0
circ(z, z') -{ 1 }→ 1 + msubst(a, t) + circ(s, t) :|: z' = t, a >= 0, z = 1 + a + s, t >= 0, s >= 0
circ(z, z') -{ 1 }→ 1 + 0 + circ(s, t) :|: z = 1 + 0 + s, z' = 1 + 0 + t, t >= 0, s >= 0
msubst(z, z') -{ 1 }→ a :|: z = a, a >= 0, z' = 0
subst(z, z') -{ 1 }→ a :|: z = a, a >= 0, z' = 0
msubst(z, z') -{ 1 }→ a :|: z = a, a >= 0, z' = 0
circ(z, z') -{ 1 }→ s :|: z = s, s >= 0, z' = 0
circ(z, z') -{ 1 }→ s :|: s >= 0, z = 0, z' = s
circ(z, z') -{ 1 }→ 1 + a + circ(s, t) :|: z = 1 + 0 + s, a >= 0, z' = 1 + a + t, t >= 0, s >= 0
circ(z, z') -{ 2 }→ 1 + a' + circ(s, t) :|: z' = t, a >= 0, z = 1 + a + s, t >= 0, s >= 0, a = a', a' >= 0, t = 0
circ(z, z') -{ 1 }→ 1 + 0 + circ(s, t) :|: z = 1 + 0 + s, z' = 1 + 0 + t, t >= 0, s >= 0
msubst(z, z') -{ 1 }→ a :|: z = a, a >= 0, z' = 0
subst(z, z') -{ 1 }→ a :|: z = a, a >= 0, z' = 0
circ(z, z') -{ 1 }→ z :|: z >= 0, z' = 0
circ(z, z') -{ 1 }→ z' :|: z' >= 0, z = 0
circ(z, z') -{ 1 }→ 1 + a + circ(z - 1, t) :|: a >= 0, z' = 1 + a + t, t >= 0, z - 1 >= 0
circ(z, z') -{ 2 }→ 1 + a' + circ(s, z') :|: a >= 0, z = 1 + a + s, z' >= 0, s >= 0, a = a', a' >= 0, z' = 0
circ(z, z') -{ 1 }→ 1 + 0 + circ(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0
msubst(z, z') -{ 1 }→ z :|: z >= 0, z' = 0
subst(z, z') -{ 1 }→ z :|: z >= 0, z' = 0
{ subst } { msubst } { circ } |
circ(z, z') -{ 1 }→ z :|: z >= 0, z' = 0
circ(z, z') -{ 1 }→ z' :|: z' >= 0, z = 0
circ(z, z') -{ 1 }→ 1 + a + circ(z - 1, t) :|: a >= 0, z' = 1 + a + t, t >= 0, z - 1 >= 0
circ(z, z') -{ 2 }→ 1 + a' + circ(s, z') :|: a >= 0, z = 1 + a + s, z' >= 0, s >= 0, a = a', a' >= 0, z' = 0
circ(z, z') -{ 1 }→ 1 + 0 + circ(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0
msubst(z, z') -{ 1 }→ z :|: z >= 0, z' = 0
subst(z, z') -{ 1 }→ z :|: z >= 0, z' = 0
circ(z, z') -{ 1 }→ z :|: z >= 0, z' = 0
circ(z, z') -{ 1 }→ z' :|: z' >= 0, z = 0
circ(z, z') -{ 1 }→ 1 + a + circ(z - 1, t) :|: a >= 0, z' = 1 + a + t, t >= 0, z - 1 >= 0
circ(z, z') -{ 2 }→ 1 + a' + circ(s, z') :|: a >= 0, z = 1 + a + s, z' >= 0, s >= 0, a = a', a' >= 0, z' = 0
circ(z, z') -{ 1 }→ 1 + 0 + circ(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0
msubst(z, z') -{ 1 }→ z :|: z >= 0, z' = 0
subst(z, z') -{ 1 }→ z :|: z >= 0, z' = 0
subst: runtime: ?, size: O(n1) [z] |
circ(z, z') -{ 1 }→ z :|: z >= 0, z' = 0
circ(z, z') -{ 1 }→ z' :|: z' >= 0, z = 0
circ(z, z') -{ 1 }→ 1 + a + circ(z - 1, t) :|: a >= 0, z' = 1 + a + t, t >= 0, z - 1 >= 0
circ(z, z') -{ 2 }→ 1 + a' + circ(s, z') :|: a >= 0, z = 1 + a + s, z' >= 0, s >= 0, a = a', a' >= 0, z' = 0
circ(z, z') -{ 1 }→ 1 + 0 + circ(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0
msubst(z, z') -{ 1 }→ z :|: z >= 0, z' = 0
subst(z, z') -{ 1 }→ z :|: z >= 0, z' = 0
subst: runtime: O(1) [1], size: O(n1) [z] |
circ(z, z') -{ 1 }→ z :|: z >= 0, z' = 0
circ(z, z') -{ 1 }→ z' :|: z' >= 0, z = 0
circ(z, z') -{ 1 }→ 1 + a + circ(z - 1, t) :|: a >= 0, z' = 1 + a + t, t >= 0, z - 1 >= 0
circ(z, z') -{ 2 }→ 1 + a' + circ(s, z') :|: a >= 0, z = 1 + a + s, z' >= 0, s >= 0, a = a', a' >= 0, z' = 0
circ(z, z') -{ 1 }→ 1 + 0 + circ(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0
msubst(z, z') -{ 1 }→ z :|: z >= 0, z' = 0
subst(z, z') -{ 1 }→ z :|: z >= 0, z' = 0
subst: runtime: O(1) [1], size: O(n1) [z] |
circ(z, z') -{ 1 }→ z :|: z >= 0, z' = 0
circ(z, z') -{ 1 }→ z' :|: z' >= 0, z = 0
circ(z, z') -{ 1 }→ 1 + a + circ(z - 1, t) :|: a >= 0, z' = 1 + a + t, t >= 0, z - 1 >= 0
circ(z, z') -{ 2 }→ 1 + a' + circ(s, z') :|: a >= 0, z = 1 + a + s, z' >= 0, s >= 0, a = a', a' >= 0, z' = 0
circ(z, z') -{ 1 }→ 1 + 0 + circ(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0
msubst(z, z') -{ 1 }→ z :|: z >= 0, z' = 0
subst(z, z') -{ 1 }→ z :|: z >= 0, z' = 0
subst: runtime: O(1) [1], size: O(n1) [z] msubst: runtime: ?, size: O(n1) [z] |
circ(z, z') -{ 1 }→ z :|: z >= 0, z' = 0
circ(z, z') -{ 1 }→ z' :|: z' >= 0, z = 0
circ(z, z') -{ 1 }→ 1 + a + circ(z - 1, t) :|: a >= 0, z' = 1 + a + t, t >= 0, z - 1 >= 0
circ(z, z') -{ 2 }→ 1 + a' + circ(s, z') :|: a >= 0, z = 1 + a + s, z' >= 0, s >= 0, a = a', a' >= 0, z' = 0
circ(z, z') -{ 1 }→ 1 + 0 + circ(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0
msubst(z, z') -{ 1 }→ z :|: z >= 0, z' = 0
subst(z, z') -{ 1 }→ z :|: z >= 0, z' = 0
subst: runtime: O(1) [1], size: O(n1) [z] msubst: runtime: O(1) [1], size: O(n1) [z] |
circ(z, z') -{ 1 }→ z :|: z >= 0, z' = 0
circ(z, z') -{ 1 }→ z' :|: z' >= 0, z = 0
circ(z, z') -{ 1 }→ 1 + a + circ(z - 1, t) :|: a >= 0, z' = 1 + a + t, t >= 0, z - 1 >= 0
circ(z, z') -{ 2 }→ 1 + a' + circ(s, z') :|: a >= 0, z = 1 + a + s, z' >= 0, s >= 0, a = a', a' >= 0, z' = 0
circ(z, z') -{ 1 }→ 1 + 0 + circ(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0
msubst(z, z') -{ 1 }→ z :|: z >= 0, z' = 0
subst(z, z') -{ 1 }→ z :|: z >= 0, z' = 0
subst: runtime: O(1) [1], size: O(n1) [z] msubst: runtime: O(1) [1], size: O(n1) [z] |
circ(z, z') -{ 1 }→ z :|: z >= 0, z' = 0
circ(z, z') -{ 1 }→ z' :|: z' >= 0, z = 0
circ(z, z') -{ 1 }→ 1 + a + circ(z - 1, t) :|: a >= 0, z' = 1 + a + t, t >= 0, z - 1 >= 0
circ(z, z') -{ 2 }→ 1 + a' + circ(s, z') :|: a >= 0, z = 1 + a + s, z' >= 0, s >= 0, a = a', a' >= 0, z' = 0
circ(z, z') -{ 1 }→ 1 + 0 + circ(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0
msubst(z, z') -{ 1 }→ z :|: z >= 0, z' = 0
subst(z, z') -{ 1 }→ z :|: z >= 0, z' = 0
subst: runtime: O(1) [1], size: O(n1) [z] msubst: runtime: O(1) [1], size: O(n1) [z] circ: runtime: ?, size: O(n1) [z + z'] |
circ(z, z') -{ 1 }→ z :|: z >= 0, z' = 0
circ(z, z') -{ 1 }→ z' :|: z' >= 0, z = 0
circ(z, z') -{ 1 }→ 1 + a + circ(z - 1, t) :|: a >= 0, z' = 1 + a + t, t >= 0, z - 1 >= 0
circ(z, z') -{ 2 }→ 1 + a' + circ(s, z') :|: a >= 0, z = 1 + a + s, z' >= 0, s >= 0, a = a', a' >= 0, z' = 0
circ(z, z') -{ 1 }→ 1 + 0 + circ(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0
msubst(z, z') -{ 1 }→ z :|: z >= 0, z' = 0
subst(z, z') -{ 1 }→ z :|: z >= 0, z' = 0
subst: runtime: O(1) [1], size: O(n1) [z] msubst: runtime: O(1) [1], size: O(n1) [z] circ: runtime: O(n1) [1 + 2·z], size: O(n1) [z + z'] |